compose(fst, factorizer(p, q)) == p;
compose(snd, factorizer(p, q)) == q;
